/**
 ******************************************************************************
 * @file     main.c
 * @author   正点原子团队(ALIENTEK)
 * @version  V1.0
 * @date     2023-08-26
 * @brief    按键输入实验
 * @license  Copyright (c) 2020-2032, 广州市星翼电子科技有限公司
 ******************************************************************************
 * @attention
 * 
 * 实验平台:正点原子 ESP32-S3 开发板
 * 在线视频:www.yuanzige.com
 * 技术论坛:www.openedv.com
 * 公司网址:www.alientek.com
 * 购买地址:openedv.taobao.com
 ******************************************************************************
 */

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "nvs_flash.h"
#include "led.h"
#include "key.h"


/**
 * @brief       程序入口
 * @param       无
 * @retval      无
 */
void app_main(void)
{
    uint8_t status;
    esp_err_t ret;
    
    ret = nvs_flash_init();     /* 初始化NVS */

    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
    {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }

    led_init();                 /* 初始化LED */
    key_init();                 /* KEY初始化 */

    /**
     * 每10ms检测一次按键的状态
     * 如果按键是按下的状态，则LED进行一次翻转
     */
    while(1)
    {
        status = key_scan(1);      /* 获取键值 */

        switch (status)
        {
            case BOOT_PRES:     /* BOOT被按下 */
            {
                LED_TOGGLE();   /* LED状态翻转 */
                break;
            }
            default:
            {
                break;
            }
        }

        vTaskDelay(10);
    }
}
